iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Software Development

燃燒大三的成果發表系列 第 2

燃燒大三的成果發表第二天 - list

  • 分享至 

  • xImage
  •  

今天我們要來分享列表的操作,分享之前不免要介紹一下list(列表)的特點

  • 可變動
  • 有順序
  • 自動控制列表長度

基本操作

在學會更進階的操作之前,先來分享幾個常用的基本操作

  1. append():將一筆資料加在目前list的最後面。

    a = [1,2,3,4]
    a.append("鐵人賽")  # str
    a.append({1:"鐵人賽"})  # dict
    a.append(("鐵","人","賽"))  # tuple
    a.append({"鐵","人","賽"})  # set
    a.append(['鐵', '人', '賽']) # lisr
    # [1, 2, 3, 4, '鐵人賽', {1: '鐵人賽'}, ('鐵', '人', '賽'), {'賽', '人', '鐵'}, ['鐵', '人', '賽']]
    
  2. insert:指定特定索引位置加上一筆資料。

    a = [1,2,3,4]
    a.insert(0, "鐵人賽") # 指定在索引0,加上str
    a.insert(0, {1:"鐵人賽"}) # 指定在索引0,加上dict
    a.insert(0, ("鐵","人","賽")) # 指定在索引0,加上tuple
    a.insert(0, {"鐵","人","賽"}) # 指定在索引0,加上set
    a.insert(0, ["鐵","人","賽"]) # 指定在索引0,加上list
    # [['鐵', '人', '賽'], {'鐵', '賽', '人'}, ('鐵', '人', '賽'), {1: '鐵人賽'}, '鐵人賽', 1, 2, 3, 4]
    
  3. extend:將兩筆list的資料合併

    a = [1,2,3,4]
    b = ["鐵","人","賽"]
    a.extend(b)
    # [1, 2, 3, 4, '鐵', '人', '賽']
    

這幾種用法都是使用原有資料修改,list 也可以使用運算子相加相乘,只是會產生與原先位址不同的新list,來看看範例程式碼:

a = [1,2,3,4]
b = ["鐵","人","賽"]
a = a + b
# [1, 2, 3, 4, '鐵', '人', '賽']
b = b * 2
# ['鐵', '人', '賽', '鐵', '人', '賽']

列表推導式

在這一年的經驗,我發現後端常常需要將資料進行處理成專案文件所需的格式,而列表也是我們經常會使用的格式,所以我們要學,會如何簡單又快速的將資料處理成list。

而列表推導式就能達到我們要的目的,是將一段簡單宣告list的程式碼,變成用一行寫出來,我們來看一下程式碼:

import time

start = time.time()
a = []
for i in range(0, 11):
    a.append(i)

end = time.time()

print("{:.10f} 秒".format(end-start))

有興趣的夥伴底下也可以都加上start跟end的測試時間的效率

這是使用for迴圈的方法,把0-10加入到list的一段程式碼

如果我們改成使用列表推導式:

a = [i for i in range(0, 11)]

原本三行的空間,我們使用一行就可以完成,並且用列表推導式相較於第一種寫法的速度更快,可謂是「省時省空間可讀性高」

除了可以加上簡單的for迴圈的,我們甚至還可以加上if判斷式,我們來看一下範例程式碼:

a = []
for i in range(0, 11):
    if i%2 == 0:
        a.append(i)

如果我們改成使用列表推導式:

a = [i for i in range(0, 11) if i%2==0]

列表推導式還能夠將巢狀list展開成一層等組合,大方向就是巢狀的程式碼改成一行,從左寫到右,雖然列表推導式看似簡單,但是在我們應用上處理資料時是滿常使用到的,所以挺重要的,像是常常可能要從其他的可迭代的資料類型,組成list,就能夠使用到。

上述的用法都是我今年碰到比較常用的部分,當然list除了append、insert、extend這些新增的用法,有新增就會有刪除或者取出。

  1. remove:將list裡,特定資料刪除
    a = ["鐵", "人", "賽"]
    a.remove("人")
    # ['鐵', '賽']
    
  2. pop:將list裡,特定索引的資料取出
    a = ["鐵", "人", "賽"]
    b = a.pop(0)
    print(a)
    # ['人', '賽']
    print(b)
    # 鐵
    

列表大概就介紹到這,這些東西雖然簡單,確實很重要的基本功,明天我要來分享


上一篇
燃燒大三的成果發表第一天 - 前言
下一篇
燃燒大三的成果發表第三天 - tuple、Dictionary、set
系列文
燃燒大三的成果發表30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言